/* 
 * File:   DecompositionInterface.h
 * Author: gustavo
 *
 * Created on July 2, 2012, 12:22 AM
 */

#ifndef DECOMPOSE_INTERFACE_HPP
#define	DECOMPOSE_INTERFACE_HPP

namespace imp {

	namespace math {

		template <class T> class DecomposeInterface {
		public:


			/**
			 * \brief Verify if the input matrix to decompose is modified during the decomposition process.
			 * 
			 * @return true if input matrix to decompose is modified.
			 */
			virtual bool modifiedInput() const = 0;

		private:
			/**
			 * \brief Computes the decomposition of input matrix.
			 * 
			 * This function computes the decomposition of the input matrix.
			 * 
			 * @param orig - input matrix.
			 */
			virtual void decompose(T& M) = 0;

		};
	}
}
#endif	/* DECOMPOSE_INTERFACE_HPP */

